/*
 * Título: gestHora. Aplicación web de gestión de horarios para conservatorios.
 * Alumnos:
 * - Javier Pardo Muñoz. I.T. Informática de Gestión
 * - Antonio Prior Cazorla. I.T. Informática de Gestión
 * Director: Dr. José Raúl Romero Salguero.
 *     
 *  Copyright (C) 2013 Javier Pardo Muñoz / Antonio Prior Cazorla
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */


function rellenarSelectDia() {
    $('#selectDia').empty();
    $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarDia", function(data) {
        $.each(data, function(i, dia) {
            $("<option value= " + dia.idDia + ">" + dia.dia + "</option>").appendTo("#selectDia");
        });
    });
}


function rellenarSelectHora() {
    $('#selectHora').empty();
    $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarHora", function(data) {
        $.each(data, function(i, hora) {
            $("<option value= " + hora.idHora + ">" + hora.hora + "</option>").appendTo("#selectHora");
        });
    });
}

function rellenarSelectEditarDia(idDia) {
    $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarDia", function(data) {
        $('#editarSelectDia').empty();
        $("<option value='null' selected>--</option>").appendTo("#editarSelectDia");
        $.each(data, function(i, dia) {
            if (idDia === dia.idDia) {
                $("<option value= " + dia.idDia + " selected>" + dia.dia + "</option>").appendTo("#editarSelectDia");
            } else {
                $("<option value= " + dia.idDia + " >" + dia.dia + "</option>").appendTo("#editarSelectDia");
            }
        });
    });
}

function rellenarSelectEditarHora(idHora) {
    $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarHora", function(data) {

        $('#editarSelectHora').empty();

        $.each(data, function(i, hora) {

            if (idHora === hora.idHora) {
                $("<option value= " + hora.idHora + " selected>" + hora.hora + "</option>").appendTo("#editarSelectHora");
            } else {
                $("<option value= " + hora.idHora + ">" + hora.hora + "</option>").appendTo("#editarSelectHora");
            }
        });
    });


}

function editorHorario(idHorario, idGrupo) {

    $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=buscarHorario&id=" + idHorario, function(data) {
        $.each(data, function(i, horario) {
            rellenarSelectEditarDia(horario.idDia);
            $("#editarIdHorario").val(idHorario);
            $("#editarIdGrupo").val(idGrupo);
            rellenarSelectEditarHora(horario.idHora, horario.idDia);
            $("#editarSelectDuracion option").eq(horario.duracion - 1).attr("selected", "selected");

        });
        $('#formEditarHorario').fadeIn();
        $('#formNuevoAsignatura').fadeOut();
    });

}

function rellenarSelectGrupoHorario() {
    if ($("#selectAsignatura").val() !== null) {
        var id = $("#selectAsignatura").val();
        $('#selectGrupo').empty();
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarGrupo&id=" + id, function(data) {
            $("<option value='' selected>Seleccione un grupo</option>").appendTo("#selectGrupo");
            $.each(data, function(i, grupo) {
                $("<option value= " + grupo.idGrupo + ">" + grupo.numeroGrupo + "</option>").appendTo("#selectGrupo");
            });
        });
    }
}

function rellenarSelectFiltrarCurso() {
    if ($('#selectFiltrarEspecialidad').val() !== '') {
        $('#selectFiltrarCurso').empty();
        var id = $('#selectFiltrarEspecialidad').val();
        $.getJSON("/gestHora/jsp/controllers/gestionEspecialidadController.jsp", "tipo=cursoEspecialidad&id=" + id, function(data) {
            $("<option value='' selected>Seleccione un curso</option>").appendTo("#selectFiltrarCurso");
            $.each(data, function(i, curso) {
                $("<option value= " + curso.idCurso + ">" + curso.nombreCurso + "</option>").appendTo("#selectFiltrarCurso");
            });
        });
    }
}

function rellenarSelectFiltrarAsignatura(idCurso, idEspecialidad) {
    if (idCurso !== '' && idEspecialidad !== '') {
        $('#selectFiltrarAsignatura').empty();
        $("<option value='' selected>Seleccione una asignatura</option>").appendTo("#selectFiltrarAsignatura");
        $.getJSON("/gestHora/jsp/controllers/busquedaAsignaturaController.jsp", "tipo=listarAsignaturaPorCurso" + "&idCurso=" + idCurso + "&idEspecialidad=" + idEspecialidad, function(data) {
            $.each(data, function(i, asignatura) {

                $("<option value= " + asignatura.idAsignatura + ">" + asignatura.nombreAsignatura + "</option>").appendTo("#selectFiltrarAsignatura");
            });
        });
    }
}

function rellenarSelectFiltrarGrupoHorario(id) {
    if (id !== '') {
        $('#selectFiltrarGrupo').empty();
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarGrupo&id=" + id, function(data) {
            $("<option value='' selected>Seleccione un grupo</option>").appendTo("#selectFiltrarGrupo");
            $.each(data, function(i, grupo) {
                $("<option value= " + grupo.idGrupo + ">" + grupo.numeroGrupo + "</option>").appendTo("#selectFiltrarGrupo");
            });
        });
    }
}

function listarHorarioCursoEspecialidad() {
    limpiarTabla();
    if ($('#selectFiltrarEspecialidad').val() !== '' && $('#selectFiltrarCurso').val() !== '') {
        var idEspecialidad = $('#selectFiltrarEspecialidad').val();
        var idCurso = $('#selectFiltrarCurso').val();
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarHorarioEspecialidadCurso&idEspecialidad=" + idEspecialidad + "&idCurso=" + idCurso, function(data) {
            //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
            //Se rellena las tablas
            $.each(data, function(i, grupo) {
                recorrerTablaEspecialidad(grupo.idDia, grupo.idHora, grupo.nombreAsignatura);
            });
        });
    }
}

function listarHorarioCursoEspecialidadAsignatura() {
    limpiarTabla();
    if ($('#selectFiltrarEspecialidad').val() !== '' && $('#selectFiltrarCurso').val() !== '' && $('#selectFiltrarAsignatura').val() !== '') {
        var idEspecialidad = $('#selectFiltrarEspecialidad').val();
        var idCurso = $('#selectFiltrarCurso').val();
        var idAsignatura = $('#selectFiltrarAsignatura').val();
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarHorarioAsignatura&idEspecialidad=" + idEspecialidad + "&idCurso=" + idCurso + "&idAsignatura=" + idAsignatura, function(data) {
            //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
            //Se rellena las tablas
            $.each(data, function(i, grupo) {
                recorrerTablaEspecialidad(grupo.idDia, grupo.idHora, grupo.nombreAsignatura);
            });
        });
    }
}

function listarHorarioEspecialidad() {
    limpiarTabla();
    if ($('#selectFiltrarEspecialidad').val() !== '') {
        var id = $('#selectFiltrarEspecialidad').val();
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarEspecialidad&id=" + id, function(data) {
            //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
            //Se rellena las tablas
            $.each(data, function(i, grupo) {
                recorrerTablaEspecialidad(grupo.idDia, grupo.idHora, grupo.nombreAsignatura);
            });
        });
    }
}



function listarHorarios(id) {
    limpiarTabla();
    if (id !== '') {
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarHorario&id=" + id, function(data) {
            //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
            //Se rellena las tablas
            $.each(data, function(i, grupo) {
                recorrerTabla(grupo.idHora, grupo.idDia, grupo.idHorario, grupo.idGrupo, grupo.duracion);
            });
        });
    }
}

function limpiarTabla() {
    var aux = 8;
    $("#tablaView > tbody").empty();
    for (i = 0; i < 13; i++) {
        //A las 15.00h no hay clase
        if (aux !== 15)
            $('#tablaView tbody').append('<tr><th>' + aux + ':00</th><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>');
        aux++;

    }
}



function recorrerTablaEspecialidad(dia, hora, nombre) {
    var html;
    $('#tablaView tbody tr').each(function(i) {
        $(this).children("td").each(function(e) {
            if ((i + 1) === hora && e + 1 === dia) {
                html = $(this).html();

                $(this).html(html + nombre + " ");

            }
        });
    });
}


function recorrerTabla(hora, dia, horario, grupo, duracion) {
    $('#tablaView tbody tr').each(function(i) {
        $(this).children("td").each(function(e) {
            if ((i + 1) === hora && e + 1 === dia) {
                $(this).html("<a href=javascript:void(0); onclick=confirmar(" + horario + "," + grupo + ");> <img src=/gestHora/img/eliminar.png alt=eliminar</a><a href=javascript:void(0); onclick=editorHorario(" + horario + "," + grupo + ");> <img src=/gestHora/img/editar.png alt=editar></a>");

                /*Si una asignatura dura más de una hora se combinan las celdas y se limpian las sobrantes*/
                if (duracion > 1) {
                    $(this).attr("rowspan", duracion);
                    for (x = i + 1; x < (i + duracion); x++) {
                        $('#tablaView tr:gt(' + x + ')').find("td").eq(e).hide();
                    }
                }
            }
        });
    });
}